package com.guodi.map.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.guodi.common.utils.PageData;
import com.guodi.core.secure.LoginUser;
import com.guodi.map.entity.MapFunctionDir;

import java.util.List;

/**
 * @描述：地图功能模块目录/图层表 服务类
 * @作者: 代鹏刚
 * @日期: 2019-12-13
 */
public interface IMapFunctionDirService extends IService<MapFunctionDir> {


    /**
     * @描述: 修改功能参数图层的状态，如果传回的是目录节点id，则会将该目录下所有功能参数状态（status）都改成1；如果传回的是功能参数节点id，则仅修改当前功能参数图层的状态（status）为1。
     *          其余未选中的功能参数图层状态（status）统一置为0
     * @入参: functionCode 功能模块的功能编码，非空必填
     * @入参: selectFunDirIds 选中的id列表，可以是目录的id，也可以是功能参数图层的id，非空必填
     * @入参: user 当前用户，非空必填
     * @出参:
     * @作者: 陈宏成
     * @日期: 2021-03-16
     **/
    void updateStatus(String functionCode, List<String>  selectFunDirIds, LoginUser user);

    /**
    * @描述: 根据功能id、用户id查询功能授权图层树
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2019/12/13 17:02
    **/
    List<MapFunctionDir> listTreeByFunctionIdAndUserId(PageData pd);

    /**
     * @描述: 根据功能id、用户id查询功能授权图层树
     * @入参:
     * @出参:
     * @作者: 李贤帆
     * @日期: 2021/5/25 14:33
     */
    List<MapFunctionDir> getListTreeByFunctionIdAndUserId(MapFunctionDir mapFunctionDir);

    /**
    * @描述: 根据ID删除功能模块图层
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2020/1/7 12:14
    **/
    List<MapFunctionDir> deleteByIds(String[] ids);

    /**
    * @描述: 验证当前目录下是否存在同名的图层
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2020/1/9 16:13
    **/
    List<MapFunctionDir> verifyByName(String[] name, String parentId);

    /**
    * @描述: 根据用户查询功能服务树
    * @入参:
    * @出参:
    * @作者: 代鹏刚
    * @日期: 2020/4/16 14:26
    **/
    List<MapFunctionDir> getFunctionDirByRoleId(String functionCode, List<String> roleIds);

    /**
     * @描述: 根据code值获取名称
     * @入参:
     * @出参:
     * @作者: 余家鑫
     * @日期: 2021/6/29 下午2:58
     */
    String getNameByCode(String code);

    /**
     * @描述: 根据code, 获取type = 2的数据
     * @入参:
     * @出参:
     * @作者: 余家鑫
     * @日期: 2021/6/29 下午3:51
     */
    MapFunctionDir getLayerEntityByCode(String code);
}
